﻿import idv.ben.gc4flash.chart.*;
import idv.ben.gc4flash.dataLine.*;
import idv.ben.gc4flash.encode.*;
import idv.ben.gc4flash.fill.*;
import idv.ben.gc4flash.util.*;
/**
* 基本款編碼方式，決定 {@link idv.ben.gc4flash.dataLine.ChartDataSet} 中各數值或文字資料如何拼湊成提供給 Google Chart 的 URL 字串。<br>
* 參考 Google Chart API：<a href="http://code.google.com/apis/chart/#simple" target="_blank">http://code.google.com/apis/chart/#simple</a><br>
*/
class idv.ben.gc4flash.encode.SimpleEncode implements IEncode {
	/**
	* 取得用以分隔在 {@link idv.ben.gc4flash.dataLine.DataLine} 中的每個 {@link idv.ben.gc4flash.dataLine.ChartDataSet} 的字元
	* @return 分隔符號字元
	*/
	public function getSeparateForEachSet():String {
		return ",";
	}
	/**
	* 將 {@link idv.ben.gc4flash.dataLine.ChartDataSet} 中的數值陣列，依照希望顯示的值域範圍，組成 URL 參數字串
	* @param dataset {@link idv.ben.gc4flash.dataLine.ChartDataSet} 中的數值陣列
	* @param min 要顯示的最小值，用以計算所有數值資料被編碼後結果。
	* @param max 要顯示的最大值，用以計算所有數值資料被編碼後結果。
	* @return 編碼結果
	*/
	public function toChartData(dataset:Array, min:Number, max:Number):String {
		var chartData:Array = new Array();
		for (var i:Number = 0; i<dataset.length; i++) {
			var currentValue = dataset[i];
			if (!isNaN(currentValue) && currentValue>=0) {
				chartData.push(EncodeType.SIMPLE_ENCODING.charAt(Math.round((EncodeType.SIMPLE_ENCODING.length-1)*(currentValue-min)/(max-min))));
			} else {
				chartData.push('_');
			}
		}
		return chartData.join('');
	}
}
